/*
 *
 * Copyright (C) 2023 Zealcomm Inc. (https://www.zealcomm.com)
 *
 */

#ifndef IRTC_CONFERENCE_OBJC_IRTCRECORDER_H_
#define IRTC_CONFERENCE_OBJC_IRTCRECORDER_H_

#import <Foundation/Foundation.h>
#import <IRTC/IRTCMacros.h>
#import "IRTC/IRTCLocalStream.h"
#import "IRTC/IRTCRemoteMixedStream.h"
#import "IRTC/IRTCRemoteStream.h"
NS_ASSUME_NONNULL_BEGIN

/**
  @brief Class IRTCSipIncomingInfo represents a sip incoming call
  information.<br>IRTCSipIncomingInfo代表了一个sip来电呼叫的信息。
  @details
*/
IRTC_OBJC_EXPORT
@interface IRTCSipIncomingInfo : NSObject
- (instancetype)init;
/// Id of sip session.<br>sip会话标识。
@property(nonatomic, copy) NSString* id;
/// Opposite information.<br>对端信息。
@property(nonatomic, copy) NSString* peerURI;
/// Does the incoming call include audio.<br>来电是否包含音频。
@property(nonatomic, assign) BOOL audio;
/// Does the incoming call include video.<br>来电是否包含视频。
@property(nonatomic, assign) BOOL video;
/// Callee's ID.<br>被呼叫者的标识。
@property(nonatomic, copy) NSString* calleeID;
/// Sip header domain custom additional information.<br>Sip头域自定义附加信息。
@property(nonatomic, copy) NSString* xHeaders;
@end

/**
  @brief Class IRTCSipIncomingCancelInfo represents a sip incoming call
  cancelled
  information.<br>IRTCSipIncomingCancelInfo代表了一个sip来电呼叫取消的信息。
  @details
*/
IRTC_OBJC_EXPORT
@interface IRTCSipIncomingCancelInfo : NSObject
- (instancetype)init;
/// Id of sip session.<br>sip会话标识。
@property(nonatomic, copy) NSString* id;
/// Opposite information.<br>对端信息。
@property(nonatomic, copy) NSString* peerURI;
@end

/**
  @brief Class IRTCSipCallClosedInfo represents a sip call closed
  information.<br>IRTCSipCallClosedInfo代表了一个sip通话结束的信息。
  @details
*/
IRTC_OBJC_EXPORT
@interface IRTCSipCallClosedInfo : NSObject
- (instancetype)init;
/// Id of sip session.<br>sip会话标识。
@property(nonatomic, copy) NSString* id;
/// Opposite information.<br>对端信息。
@property(nonatomic, copy) NSString* peerURI;
@end

/**
  @brief Class IRTCSipRegisteredInfo represents a sip call closed
  information.<br>IRTCSipRegisteredInfo代表了一个sip通话结束的信息。
  @details
*/
IRTC_OBJC_EXPORT
@interface IRTCSipRegisteredInfo : NSObject
- (instancetype)init;
/// User name of sip account.<br>sip账号名。
@property(nonatomic, copy) NSString* user;
/// Address of sip service.<br>sip服务的地址。
@property(nonatomic, copy) NSString* server;
@end

/**
  @brief Class IRTCSipDTMFInfo represents a sip DTMF event
  information.<br>IRTCSipDTMFInfo代表了一个sip DTMF事件的信息。
  @details
*/
IRTC_OBJC_EXPORT
@interface IRTCSipDTMFInfo : NSObject
- (instancetype)init;
/// Id of sip session.<br>sip会话标识。
@property(nonatomic, copy) NSString* id;
/// DTMF delivery method, value:['rtp-event',
/// 'sip-info'].<br>DTMF传递方式，取值范围：['rtp-event', 'sip-info']。
@property(nonatomic, copy) NSString* type;
/// Opposite information.<br>对端信息。
@property(nonatomic, copy) NSString* peerURI;
/// Duration of DTMF key, this item only vailed in type
/// sip-info.<br>DTMF按键时长，这个属性仅仅在sip-info类型时生效。
@property(nonatomic, assign) NSUInteger duration;
/// DTMF key value.<br>DTMF键值。
@property(nonatomic, copy) NSString* key;
/// Flage of end DTMF, this item only vailed in type
/// rtp-event.<br>DTMF结束标志，这个属性仅仅在rtp-event类型时生效。
@property(nonatomic, assign) BOOL end;

@end

NS_ASSUME_NONNULL_END
#endif  // IRTC_CONFERENCE_OBJC_IRTCRECORDER_H_